约 1449 字

约 7 分钟

#Lua 的 for ... in 循环语句

Lua 中的 for ... in 循环(泛型 for 循环)用于遍历迭代器函数返回的值序列。这是遍历表、数组和其他可迭代对象的常用方式。

for 变量列表 in 迭代器函数, 状态值, 控制值 do
    -- 循环体
end
  • 每轮循环调用 迭代器函数,参数是 状态值 和 控制值,其返回值会赋值给 变量列表
  • 状态值 始终不变,用于提供额外的信息
  • 控制值 记录上次迭代的位置,会被 迭代器函数 的返回第一个返回值更新
  • 迭代器函数 的返回第一个返回值为 nil 时结束循环

真

假

开始

迭代器函数(状态值, 控制值)

变量列表 = 迭代器返回值

控制值 = 第一个返回值

控制值 == nil?

结束

循环体

示例:

-- 迭代器函数
function iterator(state, control)
    control = control + 1
    if control < state then
        return control, control * control -- 返回索引和值
    end
end

-- 循环
for i, v in iterator, 10, 5 do
    print("索引:", i, "值:", v)
end
  • 状态值为 10
  • 初始控制值为 5

运行结果:

索引:   6       值:     36
索引:   7       值:     49
索引:   8       值:     64
索引:   9       值:     81

#遍历表

Lua 标准库中提供 ipairs 和 pairs 函数用于遍历表,前者用于数组,后者用于一般的表。

示例:

-- 定义数组
local array = {10, 20, 30, 40, 50}

-- 遍历数组
for i,v in ipairs(array) do
    print(i, v)
end

-- 定义表
local dict = {
    name = "Alice",
    age = 25,
    city = "Beijing"
}

-- 遍历
for k,v in pairs(dict) do
    print(k, v)
end

运行结果:

1       10
2       20
3       30
4       40
5       50
name    Alice
city    Beijing
age     25

更新: 2025/10/30

作者: PlanC

创建: 2025/10/2